<?php
/**
* Classe de persistência
* @package Sistema
* @subpackage Lançamento
*/
class PLancamento extends persistentePadraoSqlite{
	protected function gerarSqlPorConta($arParametros){
		$select = $where = $order = null;
		if(isset($arParametros['idConta']) && $arParametros['idConta']){
			$select = "
				select
					-- conta.conta_nome,
					-- conta_lan.*,
					lancamento.*
				from
					conta
					inner join conta as conta_lan
							on (
								conta.conta_id = {$arParametros['idConta']} and
								conta_lan.conta_esquerda >= conta.conta_esquerda and
								conta_lan.conta_direita <= conta.conta_direita
							)
					inner join lancamento
							on (conta_lan.conta_id = lan_conta_id)
				";
		}else{
			$select = "
			select
				*
			from
				lancamento";
		}
		switch (true){
			case (isset($arParametros['dataFinal']) && $arParametros['dataFinal'] && isset($arParametros['dataInicial']) && $arParametros['dataInicial']):
				$where = " where lan_data between '{$arParametros['dataInicial']->pegarData('Y-m-d')}' and '{$arParametros['dataFinal']->pegarData('Y-m-d')}'";
			break;
			case isset($arParametros['dataInicial']) && $arParametros['dataInicial']:
				$where = " where lan_data >= '{$arParametros['dataInicial']->pegarData('Y-m-d')}'";
			break;
			case isset($arParametros['dataFinal']) && $arParametros['dataFinal']:
				$where = " where lan_data >= '{$arParametros['dataFinal']->pegarData('Y-m-d')}'";
			break;
		}
		$order = " order by lan_data ";
		return $select.$where.$order;
	}
	public function lerPorConta(pagina $pagina, $arParametros){
		return $this->lerPaginado($pagina, $this->gerarSqlPorConta($arParametros));
	}
	public function lerMovimentoPorConta($arParametros){
		$sql = $this->gerarSqlPorConta($arParametros);
		$sql = "
		select
			sum(debito) as debito,
			sum(credito) as credito
		from (select
				CASE WHEN lan_tipo = 'D' THEN lan_valor else 0 end as debito,
				CASE WHEN lan_tipo = 'C' THEN lan_valor else 0 end as credito
			from
				({$sql}) as lancamento) as movimento
		";
		$res = $this->pegarSelecao($sql);
		if(count($res)){
			$resultado['debito'] = new TMoeda($res[0]['debito']*1);
			$resultado['credito'] = new TMoeda($res[0]['credito']*1);
			$resultado['total'] = new TMoeda($res[0]['credito'] - $res[0]['debito']);
		}else{
			$resultado['debito'] = new TMoeda(0);
			$resultado['credito'] = new TMoeda(0);
			$resultado['total'] = new TMoeda(0);
		}
		return $resultado;
	}
}
?>